package top.frsf.autocodegen.utils;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * 字符串转换工具类
 *
 * @author FRSF
 * @since 2024/7/30 13:13
 */
public class StringConverterUtil {

    /**
     * 将下划线命名转换为大驼峰命名。
     * eg: user_name -> UserName
     *
     * @param snakeCaseStr 下划线命名的字符串
     * @return 大驼峰命名的字符串
     */
    public static String convertSnakeToBigCamel(String snakeCaseStr) {
        return Arrays.stream(snakeCaseStr.split("_"))
                .map(word -> word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase())
                .collect(Collectors.joining());
    }

    /**
     * 将下划线命名转换为小驼峰命名。
     * eg: user_name -> userName
     *
     * @param snakeCaseStr 下划线命名的字符串
     * @return 小驼峰命名的字符串
     */
    public static String convertSnakeToSmallCamel(String snakeCaseStr) {
        String bigCamel = convertSnakeToBigCamel(snakeCaseStr);
        return Character.toLowerCase(bigCamel.charAt(0)) + bigCamel.substring(1);
    }

}
